// ==UserScript==
// @name         自动处理加载超时
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  检测加载状态，超时5秒自动刷新页面
// @author       You
// @match        *://*/*
// @grant        none
// ==/UserScript==

(function () {
  'use strict';

  let loadingTimer = null;
  let loadingStartTime = 0;
  const TIMEOUT_DURATION = 5000; // 5秒超时

  let loadingTimer2 = null;
  let loadingStartTime2 = 0;
  const TIMEOUT_DURATION2 = 10000; // 5秒超时

  function checkLoading() {
    // 查找加载中的元素
    const loadingElements = document.querySelectorAll('[class="arco-spin m4b-loading flex justify-center items-center h-screen"]');

    if (loadingElements.length > 0) {
      // 如果刚开始加载，启动计时器
      if (loadingTimer === null) {
        loadingStartTime = Date.now();
        loadingTimer = setTimeout(() => {
          console.log('加载超时，刷新页面');
          window.location.reload();
        }, TIMEOUT_DURATION);

        console.log('检测到加载状态，开始计时...');
      }

      // 检查是否已经超过5秒
      const elapsedTime = Date.now() - loadingStartTime;
      if (elapsedTime >= TIMEOUT_DURATION) {
        console.log('加载时间已超过5秒，刷新页面');
        window.location.reload();
        return;
      }
    } else {
      // 如果没有加载元素，清除计时器
      if (loadingTimer !== null) {
        clearTimeout(loadingTimer);
        loadingTimer = null;
        const elapsedTime = Date.now() - loadingStartTime;
        console.log(`加载完成，耗时: ${elapsedTime}ms`);
      }
    }
  }

  function checkLoading2() {
    // 查找加载中的元素
    const loadingElements = document.querySelectorAll('[class="arco-spin m4b-loading flex items-center justify-center w-full h-full"]');

    if (loadingElements.length > 0) {
      // 如果刚开始加载，启动计时器
      if (loadingTimer2 === null) {
        loadingStartTime2 = Date.now();
        loadingTimer2 = setTimeout(() => {
          console.log('加载超时，刷新页面');
          const el = document.querySelector('[class="arco-list-item m4b-list-item"]').childNodes[0].childNodes[0].childNodes[0];
          let key = Object.keys(el).find(p => p.startsWith('__reactFiber'));
          el[key].memoizedProps.onClick();
        }, TIMEOUT_DURATION2);

        console.log('检测到加载状态，开始计时...');
      }

      // 检查是否已经超过5秒
      const elapsedTime = Date.now() - loadingStartTime2;
      if (elapsedTime >= TIMEOUT_DURATION2) {
        console.log('加载时间已超过5秒，点击其他用户');
        const el = document.querySelector('[class="arco-list-item m4b-list-item"]').childNodes[0].childNodes[0].childNodes[0];
        let key = Object.keys(el).find(p => p.startsWith('__reactFiber'));
        el[key].memoizedProps.onClick();
        return;
      }
    } else {
      // 如果没有加载元素，清除计时器
      if (loadingTimer2 !== null) {
        clearTimeout(loadingTimer2);
        loadingTimer2 = null;
        const elapsedTime = Date.now() - loadingStartTime2;
        console.log(`加载完成，耗时: ${elapsedTime}ms`);
      }
    }
  }

  // 每秒检查一次
  setInterval(checkLoading, 1000);
  setInterval(checkLoading2, 1000);

  console.log('自动加载检测脚本已启动');
})();